// src/main.ts
import 'core-js/stable/structured-clone' // 专门为 structuredClone 打补丁
import 'regenerator-runtime/runtime' // 若项目用了 async/await，需加这行

import { ViteSSG } from 'vite-ssg'
import { createWebHashHistory } from 'vue-router'
import App from './App.vue'
import routes from './router/routes'
import i18n from './locales/i18n' // 导入i18n配置
import './style.css'
import '@/styles/global.less' // 引入全局样式
import '@/styles/tailwindcss.css' // 引入tailwindcss样式
// 修正：明确 meta.title 的类型为 string
// 1. 引入 Element Plus 核心库和全局样式
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css' // 手动引入默认样式（覆盖自动导入的样式冲突）
// 2. 引入国际化语言包（确保路径正确）
import zhCn from 'element-plus/es/locale/lang/zh-cn'
// 使用 ElementPlus 插件，并配置国际化等选项（这里以配置中文为例）
import { MotionPlugin } from '@vueuse/motion'

declare module 'vue-router' {
  interface RouteMeta {
    title?: string // 明确指定为 string 类型
    requiresAuth?: boolean
  }
}

export const createApp = ViteSSG(
  App,
  {
    history: createWebHashHistory(),
    routes,
    base: import.meta.env.BASE_URL || '/'
  },
  ctx => {
    // 安装 i18n 插件
    ctx.app.use(i18n)
    ctx.app.use(MotionPlugin)
    ctx.app.use(ElementPlus, {
      locale: zhCn
    })

    // 路由守卫：设置页面标题
    ctx.router.beforeEach((to, _from, next) => {
      // 动态设置页面标题
      if (to.meta.title) {
        document.title = to.meta.title || '默认标题' // 确保赋值为 string
      }
      next()
    })

    ctx.router.afterEach(() => {
      // 确保页面滚动到顶部
      window.scrollTo({ top: 0, behavior: 'auto' })
    })
  }
  // _ctx => {
  //   // 确保路由插件被安装
  //   // ctx.app.use(ctx.router) // 关键修改点
  // }
)
